package com.cdks.wuxiu.api.service.mysql;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.cdks.wuxiu.api.component.constant.Constant;
import com.cdks.wuxiu.api.mapper.UserIdiomInfoMapper;
import com.cdks.wuxiu.api.util.TimeUtils;
import com.cdks.wuxiu.entity.mysql.UserIdiomInfo;

import java.util.List;

import org.springframework.stereotype.Service;


/**
 * 常用语 服务实现类
 */
@Service
public class UserIdiomInfoServiceImpl extends ServiceImpl<UserIdiomInfoMapper, UserIdiomInfo> implements UserIdiomInfoService {
    @Override
    public int addIdiom(long userId, String content) {
        UserIdiomInfo info  = new UserIdiomInfo();
        info.setUserId(userId);
        info.setCreateTime(TimeUtils.getTimeSecond());
        info.setContent(content);

        baseMapper.insert(info);

        return 0;
    }

    @Override
    public int editIdiom(long userId, long id, String content) {
        UserIdiomInfo info  = new UserIdiomInfo();
        info.setStatus(Constant.AUDIT_STATUS_WAIT);
        info.setContent(content);
        
        UpdateWrapper<UserIdiomInfo> wrapper = new UpdateWrapper<>();
        wrapper.lambda().eq(UserIdiomInfo::getId, id)
                        .eq(UserIdiomInfo::getUserId, userId);
        baseMapper.update(info, wrapper);

        return 0;
    }

    @Override
    public int delIdiom(long userId, long id) {
        QueryWrapper<UserIdiomInfo> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(UserIdiomInfo::getId, id)
                        .eq(UserIdiomInfo::getUserId, userId);
        baseMapper.delete(wrapper);

        return 0;
    }

    @Override
    public List<UserIdiomInfo> getList(long userId, int page) {
        QueryWrapper<UserIdiomInfo> wrapper = new QueryWrapper<>();
        wrapper.lambda().eq(UserIdiomInfo::getUserId, userId)
                        .eq(UserIdiomInfo::getStatus, Constant.AUDIT_STATUS_PASS)
                        .orderByDesc(UserIdiomInfo::getId)
                        .select(UserIdiomInfo::getId,
                                UserIdiomInfo::getContent);

        wrapper.last("LIMIT " + page * 10 + "," + 10);
                
        return baseMapper.selectList(wrapper);
    }
}
